package jmine.tec.web.wicket.component;

import org.apache.wicket.Component;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.model.IModel;

/**
 * Container que so é exibido se pelo menos um de seus filhos é visivel.
 * 
 * @author Rafael Volpato
 * @date Oct 26, 2010
 */
public class AutoHideMarkupContainer extends WebMarkupContainer {

    /**
     * Construtor.
     * 
     * @param id id
     * @param model model
     */
    public AutoHideMarkupContainer(String id, IModel<?> model) {
        super(id, model);
    }

    /**
     * Construtor.
     * 
     * @param id id
     */
    public AutoHideMarkupContainer(String id) {
        super(id);
    }

    /**
     * Determina se o container deve ser visivel a partir do estado dos seus filhos.
     * 
     * @return <code>true</code> se pelo menos um filho é visivel, <code>false</code> caso contrario.
     */
    @Override
    public boolean isVisible() {
        for (int i = 0; i < this.size(); i++) {
            Component component = this.get(i);
            if (component.isVisibilityAllowed() && component.isVisible()) {
                return true;
            }
        }
        return false;
    }
}
